1
Introdução ao PyTorch: Por que os Tensores Importam
EvoClass-AI002Aula 1
00:00

Introdução ao PyTorch: Por que os Tensores Importam

O PyTorch é um framework aberto e dinâmico altamente flexível, amplamente utilizado em pesquisas de aprendizado profundo e prototipagem rápida. Em seu cerne, o Tensor é a estrutura de dados indispensável. É uma matriz multidimensional projetada para lidar eficientemente com operações numéricas necessárias para modelos de aprendizado profundo, suportando aceleração por aceleração por GPU automaticamente.

1. Compreendendo a Estrutura de Tensore

Toda entrada, saída e parâmetro do modelo no PyTorch é encapsulado em um Tensor. Eles têm o mesmo propósito que os arrays do NumPy, mas são otimizados para processamento em hardware especializado como GPUs, tornando-os muito mais eficientes para as operações de álgebra linear em larga escala exigidas por redes neurais.

Propriedades-chave definem o tensor:

  • Forma: Define as dimensões dos dados, expressas como uma tupla (por exemplo, $4 \times 32 \times 32$ para um lote de imagens).
  • Tipo: Especifica o tipo numérico dos elementos armazenados (por exemplo, torch.float32 para pesos do modelo, torch.int64 para indexação).
  • Dispositivo: Indica a localização física do hardware: tipicamente 'cpu' ou 'cuda' (GPU da NVIDIA).
Gráfico Dinâmico e Autograd
O PyTorch utiliza um modelo de execução imperativo, o que significa que o gráfico computacional é construído conforme as operações são executadas. Isso permite que o motor embutido de diferenciação automática, Autograd, rastreie cada operação em um Tensor, desde que a propriedade requires_grad=True esteja definida, permitindo o cálculo fácil de gradientes durante a retropropagação.
fundamentals.py
TERMINALbash — pytorch-env
> Pronto. Clique em "Executar" para iniciar.
>
INSPEÇÃO DE TENSORES Ao Vivo

Execute o código para inspecionar tensores ativos
Questão 1
Qual comando cria um tensor $5 \times 5$ contendo números aleatórios seguindo uma distribuição uniforme entre 0 e 1?
torch.rand(5, 5)
torch.random(5, 5)
torch.uniform(5, 5)
torch.randn(5, 5)
Questão 2
Se o tensor $A$ estiver na CPU e o tensor $B$ estiver no dispositivo CUDA, o que acontece se você tentar calcular $A + B$?
Ocorre um erro porque as operações exigem tensores no mesmo dispositivo.
O PyTorch move automaticamente $A$ para o dispositivo CUDA e prossegue.
A operação é realizada na CPU e o resultado é retornado à CPU.
Questão 3
Qual é o tipo de dado (dtype) mais comum usado para pesos do modelo e cálculos intermediários em aprendizado profundo?
torch.float32 (ponto flutuante de precisão simples)
torch.int64 (inteiro longo)
torch.bool
torch.float64 (ponto flutuante de precisão dupla)
Desafio: Manipulação de Tensores e Forma
Prepare um tensor para uma operação matricial específica.
Você tem um vetor de características $F$ de forma $(10,)$. Precisa multiplicá-lo por uma matriz de pesos $W$ de forma $(10, 5)$. Para que a multiplicação matricial (MatMul) funcione, $F$ deve ser bidimensional.
Passo 1
Qual deve ser a forma de $F$ antes da multiplicação com $W$?
Solução:
As dimensões internas devem combinar, então $F$ deve ser $(1, 10)$. Então $(1, 10) @ (10, 5) \rightarrow (1, 5)$.
Código: F_new = F.unsqueeze(0) ou F_new = F.view(1, -1)
Passo 2
Realize a multiplicação matricial entre $F_{new}$ e $W$ (forma $(10, 5)$).
Solução:
A operação é direta como MatMul.
Código: output = F_new @ W ou output = torch.matmul(F_new, W)
Passo 3
Qual método retorna explicitamente um tensor com as dimensões especificadas, permitindo que você aplane o tensor de volta para $(50,)$? (Suponha que $F$ era $(5, 10)$ inicialmente e agora está aplanado.)
Solução:
Use o método view ou reshape métodos. A maneira mais rápida de aplanar é geralmente usando -1 para uma dimensão.
Código: F_flat = F.view(-1) ou F_flat = F.reshape(50)